The present invention is related to automatic test equipment, and more particularly to a method and apparatus for reducing automated test equipment setup time.
Automatic test equipment (ATE) for testing electronic circuits and other devices normally operate under control of a test program running in the ATE. The ATE includes an associated computer or microprocessor for executing the program. The program typically includes instructions to control the ATE to perform multiple testing tasks in a sequence. The program is preferably modular, including one or more routines, or subroutines, for each associated task.
The ATE also includes many hardware components that require configuration, or reconfiguration, for each task. That is, the physical interconnections of the hardware components of the ATE are modified from one task to the next. For example, a relay may be closed during one task and opened for the next. Similarly, a power supply may be required to be inactive or active in one of one or more configurations for each associated task. Many other hardware component modifications may be required during the course of a test. Consequently, the program must configure the ATE hardware components before beginning each task. That is, each subroutine must include sequential instructions to reconfigure each hardware component for the given task. This results in additional “setup time” for each task.
Delays in setup time are typically compounded since subsequent tasks are required to wait for the completion of a previous task before performing the next task. For example, when the program must wait for a relay to settle before activating a power supply, and then for the power supply to reach full power before configuring the next component, the wait times are additive, which results in an increase in the setup time. These wait times are conventionally implemented by timers that are activated with each command, the subsequent configuration change being delayed until the timer has expired.
This setup time should preferably be minimized, since it adds to the overall time to perform each task, which adds significantly to the overall time to perform a test comprised of multiple tasks. Decreasing the time required to test devices results in decreasing production costs. The setup time for each given task impacts testing time significantly, since it is typically much longer than the time required to perform the given task. For example, relay settling times during setup typically take milliseconds, while the subsequent task may be performed in microseconds.
One way to minimize the setup time for each task is to avoid unnecessary instructions and their associated wait times. For example, when one or more components are already in the proper configuration from the previous task, the issuance of instructions during setup to configure/reconfigure those components is unnecessary, and may be avoided. This would eliminate the unnecessary instructions and the associated wait time for each hardware component to fully configure. However, each subroutine does not know the resulting configuration of each hardware component after the previous task, which may include the proper configuration of some or all of the associated hardware components. A possible solution is to create multiple versions of a subroutine to perform single task, each custom tailored to issue only the needed instructions based on the knowledge of which previous subroutine was executed. However, this approach is not followed since it leads to long and complex programming requirements, which reduces many of the advantages of modular programming, such as portability. As a result, in a conventional ATE, each subroutine will blindly issue setup instructions to all associated hardware components for a given task without consideration of the current configuration, adding considerably to the setup time.
Accordingly, there is a need to efficiently minimize the setup time for each task by avoiding the wait times associated with the configuration of hardware components that are already properly configured from a previous task.